This invention relates to a method and system for controlling rendering of graphical data for remote display.
Some graphical applications (or their underlying network protocols) make use of a client-server architecture whereby graphical data, comprising a series of frames each representing an image, are rendered (i.e. generated) on a server computer but transported over a network for display on a remote client computer. One example of the server-client model occurs in the display of two-dimensional (2D) images derived from a three-dimension (3D) model, such as a 3D visualisation of seismic and other geophysical data. Such 3D visualisations generate huge datasets which are difficult to distribute in an efficient manner, particularly over data networks. To address this difficulty, 2D images are rendered from the 3D visualisation at the server for distribution to one or more remote clients where the 2D images can be viewed.
There are a number of flow-control methods aimed at matching data rates in one, upstream part of a network to the capacity to handle the data at another, downstream part of the network. These known flow-control methods follow one of two strategies for dealing with excessively high data rates, i.e. buffering or discarding of data. Each of these methods brings significant disadvantages when the data is composed of a sequence of frames of graphical data representing a moving image (e.g. a representation of the rotation of an object). The discarding of data will result in loss of frames and lead to non-linear frame delivery manifesting itself in jumps in the moving image. Buffering at either end of a network link can remove or reduce the need to discard data but, particularly with high latency networks, buffering can still result in non-linear frame delivery manifesting in stuttering (i.e. significant changes in the rate of display of images) or jumps in a moving image. It is therefore desirable to provide a method and system for controlling the rendering of graphical data for delivery over a network such that stuttering or jumping of a resultant image is reduced or eliminated.
A method and system for controlling the rendering of graphical data for remote display e.g. at a remote client, is disclosed. According to a first aspect, a method of controlling rendering of graphical data for remote display comprises: at a source computer: rendering graphical data and transmitting the rendered graphical data to a remote computer. At the remote computer: receiving the transmitted rendered graphical data, presenting the graphical data for display and monitoring the rate of presenting at the remote computer of graphical data for display. Receiving at the source computer information on the rate of presenting for display at the remote computer of the transmitted graphical data; and controlling the rate at which graphical data are rendered at the source computer in response to the monitored rate of presenting for display at the remote computer.
The rate at which images are presented for display at the remote computer will be limited according to at least one of (i) the rate at which the images are transferred to the remote computer and (ii) the rate at which the remote computer processes received images for display. According to the above method, images are rendered at the server at a rate that is controlled using the rate at which images are presented for display, as monitored, at the client. Rather than seeking to control the flow of data between server and client, the rate of rendering of graphical data at the server is controlled. The resulting system removes or reduces the requirement for buffering or dropping frames so that a sequence of frames can be provided to the display smoothly, avoiding jumps and significant changes in the rate of display of the images leading to stuttering.
According to a second aspect, a method of controlling rendering of graphical data for remote display comprises, rendering graphical data at a source computer and transmitting the rendered graphical data to a remote computer for display. Receiving information on the rate of presenting for display at the remote computer the transmitted graphical data and controlling the rate at which graphical data are rendered at the source computer in response to the received information on the rate of presenting for display at the remote computer.
According to a further aspect, a system for rendering graphical data for presenting for display at a remote computer comprises: a graphics application for rendering graphical data; an output interface for transmitting the rendered graphical data to the remote computer; an input interface for receiving information on the rate of presenting for display at the remote computer of the transmitted graphical data; and a control application for limiting the rate at which graphical data are rendered by the system in response to the received information on the rate of presenting data at the remote computer.